home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.plaf.basic;
-
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Insets;
- import java.awt.Rectangle;
- import java.awt.event.KeyEvent;
- import java.beans.PropertyChangeListener;
- import javax.swing.AbstractButton;
- import javax.swing.ButtonModel;
- import javax.swing.Icon;
- import javax.swing.JComponent;
- import javax.swing.JMenu;
- import javax.swing.JMenuItem;
- import javax.swing.KeyStroke;
- import javax.swing.LookAndFeel;
- import javax.swing.MenuElement;
- import javax.swing.MenuSelectionManager;
- import javax.swing.SwingUtilities;
- import javax.swing.UIManager;
- import javax.swing.event.MenuDragMouseListener;
- import javax.swing.event.MenuKeyListener;
- import javax.swing.event.MouseInputListener;
- import javax.swing.plaf.ComponentUI;
- import javax.swing.plaf.MenuItemUI;
- import javax.swing.plaf.UIResource;
- import javax.swing.text.View;
-
- public class BasicMenuItemUI extends MenuItemUI {
- protected JMenuItem menuItem = null;
- protected Color selectionBackground;
- protected Color selectionForeground;
- protected Color disabledForeground;
- protected Color acceleratorForeground;
- protected Color acceleratorSelectionForeground;
- private String acceleratorDelimiter;
- protected int defaultTextIconGap;
- protected Font acceleratorFont;
- protected MouseInputListener mouseInputListener;
- protected MenuDragMouseListener menuDragMouseListener;
- protected MenuKeyListener menuKeyListener;
- private PropertyChangeListener propertyChangeListener;
- protected Icon arrowIcon = null;
- protected Icon checkIcon = null;
- protected boolean oldBorderPainted;
- static Rectangle zeroRect = new Rectangle(0, 0, 0, 0);
- static Rectangle iconRect = new Rectangle();
- static Rectangle textRect = new Rectangle();
- static Rectangle acceleratorRect = new Rectangle();
- static Rectangle checkIconRect = new Rectangle();
- static Rectangle arrowIconRect = new Rectangle();
- static Rectangle viewRect = new Rectangle(32767, 32767);
- // $FF: renamed from: r java.awt.Rectangle
- static Rectangle field_0 = new Rectangle();
-
- protected MenuDragMouseListener createMenuDragMouseListener(JComponent var1) {
- return new MenuDragMouseHandler(this);
- }
-
- protected MenuKeyListener createMenuKeyListener(JComponent var1) {
- return new MenuKeyHandler(this);
- }
-
- protected MouseInputListener createMouseInputListener(JComponent var1) {
- return new MouseInputHandler(this);
- }
-
- private PropertyChangeListener createPropertyChangeListener(JComponent var1) {
- return new PropertyChangeHandler(this);
- }
-
- public static ComponentUI createUI(JComponent var0) {
- return new BasicMenuItemUI();
- }
-
- public Dimension getMaximumSize(JComponent var1) {
- Dimension var2 = null;
- View var3 = (View)var1.getClientProperty("html");
- if (var3 != null) {
- var2 = this.getPreferredSize(var1);
- var2.width = (int)((float)var2.width + (var3.getMaximumSpan(0) - var3.getPreferredSpan(0)));
- }
-
- return var2;
- }
-
- public Dimension getMinimumSize(JComponent var1) {
- Dimension var2 = null;
- View var3 = (View)var1.getClientProperty("html");
- if (var3 != null) {
- var2 = this.getPreferredSize(var1);
- var2.width = (int)((float)var2.width - (var3.getPreferredSpan(0) - var3.getMinimumSpan(0)));
- }
-
- return var2;
- }
-
- public MenuElement[] getPath() {
- MenuSelectionManager var1 = MenuSelectionManager.defaultManager();
- MenuElement[] var2 = var1.getSelectedPath();
- int var4 = var2.length;
- if (var4 == 0) {
- return new MenuElement[0];
- } else {
- Container var5 = this.menuItem.getParent();
- MenuElement[] var3;
- if (var2[var4 - 1].getComponent() == var5) {
- var3 = new MenuElement[var4 + 1];
- System.arraycopy(var2, 0, var3, 0, var4);
- var3[var4] = this.menuItem;
- } else {
- int var6;
- for(var6 = var2.length - 1; var6 >= 0 && var2[var6].getComponent() != var5; --var6) {
- }
-
- var3 = new MenuElement[var6 + 2];
- System.arraycopy(var2, 0, var3, 0, var6 + 1);
- var3[var6 + 1] = this.menuItem;
- }
-
- return var3;
- }
- }
-
- protected Dimension getPreferredMenuItemSize(JComponent var1, Icon var2, Icon var3, int var4) {
- JMenuItem var5 = (JMenuItem)var1;
- Icon var6 = ((AbstractButton)var5).getIcon();
- String var7 = ((AbstractButton)var5).getText();
- KeyStroke var8 = var5.getAccelerator();
- String var9 = "";
- if (var8 != null) {
- int var10 = var8.getModifiers();
- if (var10 > 0) {
- var9 = KeyEvent.getKeyModifiersText(var10);
- var9 = var9 + this.acceleratorDelimiter;
- }
-
- var9 = var9 + KeyEvent.getKeyText(var8.getKeyCode());
- }
-
- Font var16 = ((Component)var5).getFont();
- FontMetrics var11 = ((Component)var5).getToolkit().getFontMetrics(var16);
- FontMetrics var12 = ((Component)var5).getToolkit().getFontMetrics(this.acceleratorFont);
- this.resetRects();
- this.layoutMenuItem(var11, var7, var12, var9, var6, var2, var3, ((AbstractButton)var5).getVerticalAlignment(), ((AbstractButton)var5).getHorizontalAlignment(), ((AbstractButton)var5).getVerticalTextPosition(), ((AbstractButton)var5).getHorizontalTextPosition(), viewRect, iconRect, textRect, acceleratorRect, checkIconRect, arrowIconRect, var7 == null ? 0 : var4, var4);
- field_0.setBounds(textRect);
- field_0 = SwingUtilities.computeUnion(iconRect.x, iconRect.y, iconRect.width, iconRect.height, field_0);
- boolean var13 = var9 == null || var9.equals("");
- if (!var13) {
- Rectangle var10000 = field_0;
- var10000.width += acceleratorRect.width;
- var10000 = field_0;
- var10000.width += 7 * var4;
- }
-
- if (this.useCheckAndArrow()) {
- Rectangle var18 = field_0;
- var18.width += checkIconRect.width;
- var18 = field_0;
- var18.width += var4;
- var18 = field_0;
- var18.width += var4;
- var18 = field_0;
- var18.width += arrowIconRect.width;
- }
-
- Rectangle var22 = field_0;
- var22.width += 2 * var4;
- Insets var14 = ((JComponent)var5).getInsets();
- if (var14 != null) {
- var22 = field_0;
- var22.width += var14.left + var14.right;
- var22 = field_0;
- var22.height += var14.top + var14.bottom;
- }
-
- if (field_0.width % 2 == 0) {
- ++field_0.width;
- }
-
- if (field_0.height % 2 == 0) {
- ++field_0.height;
- }
-
- return field_0.getSize();
- }
-
- public Dimension getPreferredSize(JComponent var1) {
- return this.getPreferredMenuItemSize(var1, this.checkIcon, this.arrowIcon, this.defaultTextIconGap);
- }
-
- protected String getPropertyPrefix() {
- return "MenuItem";
- }
-
- private void installComponents() {
- BasicHTML.updateRenderer(this.menuItem, this.menuItem.getText());
- }
-
- protected void installDefaults() {
- String var1 = this.getPropertyPrefix();
- this.acceleratorFont = UIManager.getFont("MenuItem.acceleratorFont");
- this.menuItem.setOpaque(true);
- if (this.menuItem.getMargin() == null || this.menuItem.getMargin() instanceof UIResource) {
- this.menuItem.setMargin(UIManager.getInsets(var1 + ".margin"));
- }
-
- this.defaultTextIconGap = 4;
- LookAndFeel.installBorder(this.menuItem, var1 + ".border");
- this.oldBorderPainted = this.menuItem.isBorderPainted();
- this.menuItem.setBorderPainted((Boolean)UIManager.get(var1 + ".borderPainted"));
- LookAndFeel.installColorsAndFont(this.menuItem, var1 + ".background", var1 + ".foreground", var1 + ".font");
- if (this.selectionBackground == null || this.selectionBackground instanceof UIResource) {
- this.selectionBackground = UIManager.getColor(var1 + ".selectionBackground");
- }
-
- if (this.selectionForeground == null || this.selectionForeground instanceof UIResource) {
- this.selectionForeground = UIManager.getColor(var1 + ".selectionForeground");
- }
-
- if (this.disabledForeground == null || this.disabledForeground instanceof UIResource) {
- this.disabledForeground = UIManager.getColor(var1 + ".disabledForeground");
- }
-
- if (this.acceleratorForeground == null || this.acceleratorForeground instanceof UIResource) {
- this.acceleratorForeground = UIManager.getColor(var1 + ".acceleratorForeground");
- }
-
- if (this.acceleratorSelectionForeground == null || this.acceleratorSelectionForeground instanceof UIResource) {
- this.acceleratorSelectionForeground = UIManager.getColor(var1 + ".acceleratorSelectionForeground");
- }
-
- this.acceleratorDelimiter = UIManager.getString("MenuItem.acceleratorDelimiter");
- if (this.acceleratorDelimiter == null) {
- this.acceleratorDelimiter = "+";
- }
-
- if (this.arrowIcon == null || this.arrowIcon instanceof UIResource) {
- this.arrowIcon = UIManager.getIcon(var1 + ".arrowIcon");
- }
-
- if (this.checkIcon == null || this.checkIcon instanceof UIResource) {
- this.checkIcon = UIManager.getIcon(var1 + ".checkIcon");
- }
-
- }
-
- protected void installKeyboardActions() {
- }
-
- protected void installListeners() {
- this.mouseInputListener = this.createMouseInputListener(this.menuItem);
- this.menuDragMouseListener = this.createMenuDragMouseListener(this.menuItem);
- this.menuKeyListener = this.createMenuKeyListener(this.menuItem);
- this.propertyChangeListener = this.createPropertyChangeListener(this.menuItem);
- this.menuItem.addMouseListener(this.mouseInputListener);
- this.menuItem.addMouseMotionListener(this.mouseInputListener);
- this.menuItem.addMenuDragMouseListener(this.menuDragMouseListener);
- this.menuItem.addMenuKeyListener(this.menuKeyListener);
- this.menuItem.addPropertyChangeListener(this.propertyChangeListener);
- }
-
- public void installUI(JComponent var1) {
- this.menuItem = (JMenuItem)var1;
- this.installDefaults();
- this.installComponents();
- this.installListeners();
- this.installKeyboardActions();
- }
-
- private String layoutMenuItem(FontMetrics var1, String var2, FontMetrics var3, String var4, Icon var5, Icon var6, Icon var7, int var8, int var9, int var10, int var11, Rectangle var12, Rectangle var13, Rectangle var14, Rectangle var15, Rectangle var16, Rectangle var17, int var18, int var19) {
- SwingUtilities.layoutCompoundLabel(this.menuItem, var1, var2, var5, var8, var9, var10, var11, var12, var13, var14, var18);
- if (var4 != null && !var4.equals("")) {
- var15.width = SwingUtilities.computeStringWidth(var3, var4);
- var15.height = var3.getHeight();
- } else {
- var15.width = var15.height = 0;
- var4 = "";
- }
-
- if (this.useCheckAndArrow()) {
- if (var6 != null) {
- var16.width = var6.getIconWidth();
- var16.height = var6.getIconHeight();
- } else {
- var16.width = var16.height = 0;
- }
-
- if (var7 != null) {
- var17.width = var7.getIconWidth();
- var17.height = var7.getIconHeight();
- } else {
- var17.width = var17.height = 0;
- }
- }
-
- Rectangle var20 = var13.union(var14);
- if (BasicGraphicsUtils.isLeftToRight(this.menuItem)) {
- var14.x += var19;
- var13.x += var19;
- var15.x = var12.x + var12.width - var17.width - var19 - var15.width;
- if (this.useCheckAndArrow()) {
- var16.x = var12.x + var19;
- var14.x += var19 + var16.width;
- var13.x += var19 + var16.width;
- var17.x = var12.x + var12.width - var19 - var17.width;
- }
- } else {
- var14.x -= var19;
- var13.x -= var19;
- var15.x = var12.x + var17.width + var19;
- if (this.useCheckAndArrow()) {
- var16.x = var12.x + var12.width - var19 - var16.width;
- var14.x -= var19 + var16.width;
- var13.x -= var19 + var16.width;
- var17.x = var12.x + var19;
- }
- }
-
- var15.y = var20.y + var20.height / 2 - var15.height / 2;
- if (this.useCheckAndArrow()) {
- var17.y = var20.y + var20.height / 2 - var17.height / 2;
- var16.y = var20.y + var20.height / 2 - var16.height / 2;
- }
-
- return var2;
- }
-
- public void paint(Graphics var1, JComponent var2) {
- this.paintMenuItem(var1, var2, this.checkIcon, this.arrowIcon, this.selectionBackground, this.selectionForeground, this.defaultTextIconGap);
- }
-
- protected void paintMenuItem(Graphics var1, JComponent var2, Icon var3, Icon var4, Color var5, Color var6, int var7) {
- JMenuItem var8 = (JMenuItem)var2;
- ButtonModel var9 = ((AbstractButton)var8).getModel();
- int var10 = ((JComponent)var8).getWidth();
- int var11 = ((JComponent)var8).getHeight();
- Insets var12 = var2.getInsets();
- this.resetRects();
- viewRect.setBounds(0, 0, var10, var11);
- Rectangle var10000 = viewRect;
- var10000.x += var12.left;
- var10000 = viewRect;
- var10000.y += var12.top;
- var10000 = viewRect;
- var10000.width -= var12.right + viewRect.x;
- var10000 = viewRect;
- var10000.height -= var12.bottom + viewRect.y;
- Font var13 = var1.getFont();
- Font var14 = ((Component)var2).getFont();
- var1.setFont(var14);
- FontMetrics var15 = var1.getFontMetrics(var14);
- FontMetrics var16 = var1.getFontMetrics(this.acceleratorFont);
- Color var17 = var1.getColor();
- if (var2.isOpaque()) {
- if (!var9.isArmed() && (!(var2 instanceof JMenu) || !var9.isSelected())) {
- var1.setColor(((Component)var8).getBackground());
- var1.fillRect(0, 0, var10, var11);
- } else {
- var1.setColor(var5);
- var1.fillRect(0, 0, var10, var11);
- }
-
- var1.setColor(var17);
- }
-
- KeyStroke var18 = var8.getAccelerator();
- String var19 = "";
- if (var18 != null) {
- int var20 = var18.getModifiers();
- if (var20 > 0) {
- var19 = KeyEvent.getKeyModifiersText(var20);
- var19 = var19 + this.acceleratorDelimiter;
- }
-
- var19 = var19 + KeyEvent.getKeyText(var18.getKeyCode());
- }
-
- String var23 = this.layoutMenuItem(var15, ((AbstractButton)var8).getText(), var16, var19, ((AbstractButton)var8).getIcon(), var3, var4, ((AbstractButton)var8).getVerticalAlignment(), ((AbstractButton)var8).getHorizontalAlignment(), ((AbstractButton)var8).getVerticalTextPosition(), ((AbstractButton)var8).getHorizontalTextPosition(), viewRect, iconRect, textRect, acceleratorRect, checkIconRect, arrowIconRect, ((AbstractButton)var8).getText() == null ? 0 : var7, var7);
- if (var3 != null) {
- if (!var9.isArmed() && (!(var2 instanceof JMenu) || !var9.isSelected())) {
- var1.setColor(((Component)var8).getForeground());
- } else {
- var1.setColor(var6);
- }
-
- if (this.useCheckAndArrow()) {
- var3.paintIcon(var2, var1, checkIconRect.x, checkIconRect.y);
- }
-
- var1.setColor(var17);
- }
-
- if (((AbstractButton)var8).getIcon() != null) {
- Icon var21;
- if (!var9.isEnabled()) {
- var21 = ((AbstractButton)var8).getDisabledIcon();
- } else if (var9.isPressed() && var9.isArmed()) {
- var21 = ((AbstractButton)var8).getPressedIcon();
- if (var21 == null) {
- var21 = ((AbstractButton)var8).getIcon();
- }
- } else {
- var21 = ((AbstractButton)var8).getIcon();
- }
-
- if (var21 != null) {
- var21.paintIcon(var2, var1, iconRect.x, iconRect.y);
- }
- }
-
- if (var23 != null) {
- View var24 = (View)var2.getClientProperty("html");
- if (var24 != null) {
- var24.paint(var1, textRect);
- } else if (!var9.isEnabled()) {
- if (UIManager.get("MenuItem.disabledForeground") instanceof Color) {
- var1.setColor(UIManager.getColor("MenuItem.disabledForeground"));
- BasicGraphicsUtils.drawString(var1, var23, var9.getMnemonic(), textRect.x, textRect.y + var15.getAscent());
- } else {
- var1.setColor(((Component)var8).getBackground().brighter());
- BasicGraphicsUtils.drawString(var1, var23, var9.getMnemonic(), textRect.x, textRect.y + var15.getAscent());
- var1.setColor(((Component)var8).getBackground().darker());
- BasicGraphicsUtils.drawString(var1, var23, var9.getMnemonic(), textRect.x - 1, textRect.y + var15.getAscent() - 1);
- }
- } else {
- if (!var9.isArmed() && (!(var2 instanceof JMenu) || !var9.isSelected())) {
- var1.setColor(((Component)var8).getForeground());
- } else {
- var1.setColor(var6);
- }
-
- BasicGraphicsUtils.drawString(var1, var23, var9.getMnemonic(), textRect.x, textRect.y + var15.getAscent());
- }
- }
-
- if (var19 != null && !var19.equals("")) {
- var1.setFont(this.acceleratorFont);
- if (!var9.isEnabled()) {
- if (this.disabledForeground != null) {
- var1.setColor(this.disabledForeground);
- BasicGraphicsUtils.drawString(var1, var19, 0, acceleratorRect.x, acceleratorRect.y + var16.getAscent());
- } else {
- var1.setColor(((Component)var8).getBackground().brighter());
- BasicGraphicsUtils.drawString(var1, var19, 0, acceleratorRect.x, acceleratorRect.y + var16.getAscent());
- var1.setColor(((Component)var8).getBackground().darker());
- BasicGraphicsUtils.drawString(var1, var19, 0, acceleratorRect.x - 1, acceleratorRect.y + var16.getAscent() - 1);
- }
- } else {
- if (!var9.isArmed() && (!(var2 instanceof JMenu) || !var9.isSelected())) {
- var1.setColor(this.acceleratorForeground);
- } else {
- var1.setColor(this.acceleratorSelectionForeground);
- }
-
- BasicGraphicsUtils.drawString(var1, var19, 0, acceleratorRect.x, acceleratorRect.y + var16.getAscent());
- }
- }
-
- if (var4 != null) {
- if (var9.isArmed() || var2 instanceof JMenu && var9.isSelected()) {
- var1.setColor(var6);
- }
-
- if (this.useCheckAndArrow()) {
- var4.paintIcon(var2, var1, arrowIconRect.x, arrowIconRect.y);
- }
- }
-
- var1.setColor(var17);
- var1.setFont(var13);
- }
-
- void printMenuElementArray(MenuElement[] var1, boolean var2) {
- System.out.println("Path is(");
- int var3 = 0;
-
- for(int var4 = var1.length; var3 < var4; ++var3) {
- for(int var5 = 0; var5 <= var3; ++var5) {
- System.out.print(" ");
- }
-
- MenuElement var6 = var1[var3];
- if (var6 instanceof JMenuItem) {
- System.out.println(((JMenuItem)var6).getText() + ", ");
- } else if (var6 == null) {
- System.out.println("NULL , ");
- } else {
- System.out.println(var6 + ", ");
- }
- }
-
- System.out.println(")");
- if (var2) {
- Thread.dumpStack();
- }
-
- }
-
- private void resetRects() {
- iconRect.setBounds(zeroRect);
- textRect.setBounds(zeroRect);
- acceleratorRect.setBounds(zeroRect);
- checkIconRect.setBounds(zeroRect);
- arrowIconRect.setBounds(zeroRect);
- viewRect.setBounds(0, 0, 32767, 32767);
- field_0.setBounds(zeroRect);
- }
-
- private void uninstallComponents() {
- BasicHTML.updateRenderer(this.menuItem, "");
- }
-
- protected void uninstallDefaults() {
- LookAndFeel.uninstallBorder(this.menuItem);
- this.menuItem.setBorderPainted(this.oldBorderPainted);
- if (this.arrowIcon instanceof UIResource) {
- this.arrowIcon = null;
- }
-
- if (this.checkIcon instanceof UIResource) {
- this.checkIcon = null;
- }
-
- }
-
- protected void uninstallKeyboardActions() {
- }
-
- protected void uninstallListeners() {
- this.menuItem.removeMouseListener(this.mouseInputListener);
- this.menuItem.removeMouseMotionListener(this.mouseInputListener);
- this.menuItem.removeMenuDragMouseListener(this.menuDragMouseListener);
- this.menuItem.removeMenuKeyListener(this.menuKeyListener);
- this.menuItem.removePropertyChangeListener(this.propertyChangeListener);
- this.mouseInputListener = null;
- this.menuDragMouseListener = null;
- this.menuKeyListener = null;
- this.propertyChangeListener = null;
- }
-
- public void uninstallUI(JComponent var1) {
- this.uninstallDefaults();
- this.uninstallComponents();
- this.uninstallListeners();
- this.uninstallKeyboardActions();
- this.menuItem = null;
- }
-
- public void update(Graphics var1, JComponent var2) {
- this.paint(var1, var2);
- }
-
- private boolean useCheckAndArrow() {
- boolean var1 = true;
- if (this.menuItem instanceof JMenu && ((JMenu)this.menuItem).isTopLevelMenu()) {
- var1 = false;
- }
-
- return var1;
- }
- }
-